package com.jmxcfc.blfsc.common.sms.notify;


import com.alibaba.fastjson.JSON;
import com.jmxcfc.blfsc.common.sms.enums.MsgTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;


/**
 * 短信或者语音状态通知的入参,blfsc接收到厂商异步通知后,blfsc请求blfs-sms进行发送状态处理
 * @author pbs
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultNotifyRequest<T> {

    /**
     * 短信请求流水号
     */
    private String requestNo;

    /**
     * 批次号(batchId)字段(序列号)
     */
    private String batchId;

    /**
     * 必填消息类型:
     * 短信回调
     * 语音回调
     */
    private MsgTypeEnum msgTypeEnum;

    /**
     * 通知回调的数据,多条或者单条
     */
    private List<NotifyDataItem> notifyDataList;

    /**
     * 扩展字段
     */
    private T extend;

    /**
     * 请求开始时间
     */
    private LocalDateTime startTime = LocalDateTime.now();


    /**
     * 请求结束数据
     */
    private LocalDateTime endTime;


    public static <T> ResultNotifyRequest<T> of(MsgTypeEnum msgTypeEnum) {
        ResultNotifyRequest<T> smsNotifyRequest = new ResultNotifyRequest<>();
        smsNotifyRequest.setMsgTypeEnum(msgTypeEnum);
        return smsNotifyRequest;
    }


    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}